<?php

use Intervention\Image\ImageManagerStatic as Image;
use Yaf\Controller_Abstract;
use const Yaf\VERSION;

/**
 * @name IndexController
 * @author root
 * @desc 默认控制器
 * @see http://www.php.net/manual/en/class.yaf-controller-abstract.php
 */
class IndexController extends Controller_Abstract
{
    // 从控制器分离的动作(相对路径)
    public $actions = array(
        'test' => 'actions/Test.php',
    );

    /**
     * 默认初始化方法，如果不需要，可以删除掉这个方法
     * 如果这个方法被定义，那么在Controller被构造以后，Yaf会调用这个方法
     */
    public function init()
    {
        $this->getView()->assign("header", "Yaf Example");
    }

    /**
     * 默认动作
     * Yaf支持直接把\Yaf\Request_Abstract::getParam()得到的同名参数作为Action的形参
     * 对于如下的例子, 当访问http://yourhost/index/index/index/name/root 的时候, 你就会发现不同
     * @param string $name
     * @return bool
     */
    public function indexAction(string $name = "David"): bool
    {
        //1. fetch query
        //$get = $this->getRequest()->getQuery("get", "default value");
        $file = str_replace(APPLICATION_PATH, '', __FILE__);
        $name = $name . ' . （Page：' . $file.'）'.PHP_EOL;

        //2. fetch model
        $model = new SampleModel();

        //3. assign
        $this->getView()->assign("content", $model->selectSample() .' Yaf Version:' . VERSION);
        $this->getView()->assign("name", $name);

        //4. render by Yaf, 如果这里返回FALSE, Yaf将不会调用自动视图引擎Render模板
        return true;
    }

    /**
     * @param string $q
     * @return bool
     */
    public function imageAction(string $q = 'IYUUPlus'):bool
    {
        Image::configure(array('driver' => 'imagick'));
        if (isUrlEncoded($q)) {
            $q = urldecode($q);
        }
        $len = strlen($q);
        $len *= 100;
        $img = Image::canvas($len, 130, '#000');
//        $img->rectangle($len/2, 0, $len/4, 120, function ($draw) {
//            $draw->background('#ff0000');
//            $draw->border(1, '#FFF');
//        });
        $img->text($q, $len/2, 0, function ($font){
            $font->file(public_path() . '/static/font/FZLTZCHJW.TTF');
            $font->size(100);
            $font->color('#fdf6e3');
            $font->align('center');
            $font->valign('top');
            //$font->angle(45);
        });
        echo $img->response();
        $img->destroy();

        return false;
    }
}
